/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package telas;
import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.JTextField;
import javax.swing.JFrame;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import controladoras.apresentacao.CntrIntCliente;
import java.awt.GridLayout;
import javax.swing.GroupLayout;
import javax.swing.JLabel;
/**
 *
 * @author thiagostuckert
 */
public class TelaCadastroCliente  extends javax.swing.JFrame {
     /**
     * Referencia para o objeto da tela.
     */
    private static TelaCadastroCliente ref;
    /**
     * Instancia o objeto da tela caso n esteja insntanciado.
     * @return TelaConsultaVoo objeto para a tela.
     */
    public static TelaCadastroCliente instanciar() {
        if (ref == null) {
            ref = new TelaCadastroCliente();
        }
        return ref;
    }
    /**
     * Controladora de interacao cliente.
     */
    private CntrIntCliente cntrIntCliente;
    /**
     * Botao cadastrar da tela.
     */
    private JButton botaoCadastrar = new JButton();
    /**
     * Botao sair da tela.
     */
    private JButton botaoSair = new JButton();
    /**
     * Campo cpf da tela.
     */
    private JTextField campoCpf = new JTextField();
    /**
     * Campo nome da tela.
     */
    private JTextField campoNome = new JTextField();
    /**
     * Campo telefone da tela.
     */
    private JTextField campoTelefone = new JTextField();
    /**
     * Painel da tela.
     */

    private JPanel painel = new JPanel();
    /**
     * Frame da tela.
     */
    private JFrame frame = new JFrame("Cadastro Cliente");
    /**
     * Explicacao do campo Nome.
     */
    private JLabel explicacaoNome = new JLabel("Nome:");
    /**
     * Explicacao do campo Telefone.
     */
    private JLabel explicacaoTelefone = new JLabel("Telefone:");
    /**
     * Explicacao Matricula.
     */
    private JLabel explicacaoCpf = new JLabel("Cpf:");


    /**
     * Set a visibilidade do frame.
     * @param visible visibilidade do frame.
     */
    public final void setFrameVisible(final boolean visible) {
        frame.setVisible(visible);
    }

    /**
     * Seta a controladora de interação da tela.
     * @param cntr controladora de interação da tela.
     */
    public final void setControladoraInteracao(final CntrIntCliente cntr) {
        cntrIntCliente = cntr;
    }
    /**
     * Construtor da tela.
     */
    public TelaCadastroCliente() {
        mostrarTela();
    }
    /**
     * Inicializa os componentens da tela.
     */
    public final void mostrarTela() {

        botaoCadastrar.setText("Cadastrar");
        botaoSair.setText("Fechar");
        campoNome.setText("Exemplo: Thiago Stuckert");
        campoTelefone.setText("Exemplo: 6181409961");
        campoCpf.setText("Exemplo: 01366760140");

        frame.setSize(700, 200);

        JPanel esquerda = new JPanel();
        esquerda.setLayout(new GridLayout(5, 2, 0, 1));

        explicacaoNome.setSize(4, 4);
        explicacaoTelefone.setSize(4, 4);
        explicacaoCpf.setSize(4, 4);

        esquerda.add(explicacaoNome);
        esquerda.add(explicacaoTelefone);
        esquerda.add(explicacaoCpf);

        GroupLayout layout = new GroupLayout(painel);
        painel.setLayout(layout);

        campoNome.setSize(4, 4);
        campoTelefone.setSize(4, 4);
        campoCpf.setSize(4, 4);

        painel.add(esquerda);
        painel.add(campoNome);
        painel.add(campoTelefone);
        painel.add(campoCpf);
        painel.add(botaoCadastrar);
        painel.add(botaoSair);


        layout.setHorizontalGroup(
         layout.createSequentialGroup()
                .addComponent(esquerda)
                .addGroup(layout.createParallelGroup()
                .addComponent(campoNome)
                .addComponent(campoTelefone)
                .addComponent(campoCpf)
            )
            .addGroup(layout.createParallelGroup()
                .addComponent(botaoCadastrar)
                .addComponent(botaoSair)
             )
           );

        layout.setVerticalGroup(
         layout.createParallelGroup()
            .addComponent(esquerda)
            .addGroup(layout.createSequentialGroup()
                .addComponent(campoNome)
                .addComponent(campoTelefone)
                .addComponent(campoCpf)
            )
            .addGroup(layout.createSequentialGroup()
                .addComponent(botaoCadastrar)
                .addComponent(botaoSair)
             )
           );

        botaoCadastrar.addActionListener(new ActionListener() {
            public void actionPerformed(final ActionEvent evt) {
                botaoCadastrar(evt);
            }
        });

        botaoSair.addActionListener(new ActionListener() {
            public void actionPerformed(final ActionEvent evt) {
                botaoFechar(evt);
            }
        });

        frame.getContentPane().add(painel);
    }
    /**
     * Trata o evento de clique do botão cadastrar.
     * @param event evento gerado pelo clique do botão cadastrar.
     */
    private void botaoCadastrar(final ActionEvent event) {
        cntrIntCliente.cadastrarCliente(campoNome.getText(),
                campoTelefone.getText(), campoCpf.getText());
    }
    /**
     * Trata o evento do clique do botão fechar.
     * @param event evento gerado pelo clique do botão fechar.
     */
    private void botaoFechar(final ActionEvent event) {
        frame.setVisible(false);
    }
}
